1. Field of the Invention
The present invention relates to the construction of software products. More specifically, the invention relates to a system for conversion of stored design information into desired software products.
2. Description of the Related Art
Many software programs are based, in whole or in part, on an underlying type of design data such as message sets, Finite State Machines (FSMs), and rule based sets. Often this design data is not formally specified, but is hard-coded manually in a programming language that is compiled into machine code to be executed by a given processor and operating system. Design data or information is also specified in system requirements, documents or published standards, and is then translated by hand into source code for a specific application. Current practice requires that the reuse of information in a different application environment be accompanied by the difficult and expensive process of writing a new source code adapted to the new environment.
Design data or information can be defined as data that specifies the objects of a computer system environment, its properties and interconnections. Examples of objects include a block of code, a requirements document, a worldwide web (WWW) page, a design specification including information used only within the object, input/output interfaces, graphic user interface (GUI) pages, and hardware and software operating and maintenance procedures, such as diagnostics and system installation. Software objects used in a standard interface are applicable to a variety of applications because the object has no dependencies on a specific environment. A computer using the standard interface can therefore use design information for developing various objects or computer products if access to the information does not depend on a specific object or environment.
Design information can retain its usefulness for years extending across current and future environments. Design information can be reused in many ways throughout its life cycle and may cross numerous product releases and product lines. Therefore, its lifetime may be longer than any single product as it is adapted to changing technologies and requirements. Reuse of design information can facilitate faster delivery of high quality software, provide real-time synchronization between the production of requirements, documentation and software, and allow rapid response to an ever changing environment.
Stored design information can be easily adapted to a variety of uses. However, the present methods and techniques of reusing data compromise these advantages. The present day requirement for expensive human intervention to translate the design information into software products slows software development, impairs synchronization between the production of requirements, documentation and software, and slows the response to changes in the environment.
A need therefore exists to provide an automatic system for extracting stored design information from a design information database to assemble and format objects and software products using a minimum of manual intervention.
The present invention provides a software amplifier that converts stored design information to a desired format to produce a desired software product or object such as program code, source code, documentation, design diagrams, web pages, etc. According to a first preferred embodiment of the present invention, the software amplifier receives design information from a database as a first input, template information and control information as a second input, and a rules set as a third input. The template information is preferably a plain text parameterized sample of the desired object format and is stored in a control file. The control information is stored in the control file with the template information to direct the retrieval of desired design information from the database and shape the design information into an output according to instructions included in the control information. The rules set processes the control file and produces the desired object or software product based on the rules.
In a second preferred embodiment of the present invention, the software amplifier receives design information from a database as a first input, and a control file as a second input. The control file in the second embodiment is a computer program that includes the template information and control information formatted in a commercial programming language. The template information is preferably a plain text parameterized sample of the desired object format that is converted into print statements. The control information directs the retrieval of desired design information from the database and shapes the design information into an output according to instructions included in the control information. The control file is executed by the commercial programming language compiler to produce the desired object or software product.